1. Technical Field
The present invention relates in general to the data processing field. More specifically, the present invention relates to the field of object oriented framework mechanisms.
2. Related Art
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware (e.g., semiconductors, circuit boards, etc.) and software (e.g., computer programs). As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
Computer systems typically include operating system software that controls the basic function of the computer, and one or more software application programs that run under the control of the operating system to perform desired tasks. For example, a typical IBM Personal Computer may run the OS/2 operating system, and under the control of the OS/2 operating system, a user may execute an application program, such as a word processor. As the capabilities of computer systems have increased, the software programs designed for these high performance systems have become more powerful. Additionally, software development costs have continued to rise because more powerful and complex programs take more time, and hence more money, to produce.
One way in which the performance of application software programs has been improved while the associated development costs have been reduced is by using object-oriented programming concepts. The goal of using object-oriented programming is to create small, reusable sections of program code known as xe2x80x9cobjectsxe2x80x9d that can be quickly and easily combined and re-used to create new programs. This is similar to the idea of using the same set of building blocks again and again to create many different structures. The modular and re-usable aspects of objects will typically speed development of new programs, thereby reducing the costs associated with the development cycle. In addition, by creating and re-using a group of well-tested objects,, a more stable, uniform, and consistent approach to developing new computer programs can be achieved.
Recent development efforts have produced a host of object oriented frameworks that perform a variety of different functions. A framework typically includes a core portion that cannot be modified by a framework user, and a user-extensible portion that allows a user to customize the framework and to generate from the framework a custom software application. The framework user (or customizer) must extend the extensible portions of the framework to produce the desired customized software. The manner of extending a framework depends on many factors, including the programming language used, the types of extensions supported, the particular extension points provided in the framework, etc.
The task of framework customization can be a complex one. The success or failure of many frameworks in the marketplace has rested upon the complexity of the customization and extension of the framework. Some have recognized the problems of extending a complex framework, and have provided solutions such as: 1) education courses about how to customize a particular framework; 2) documentation on how to customize a particular framework; and 3) tools to guide a framework customizer through the customization process for a particular framework. All of these solutions are specifically targeted to the customization of a single framework. As of yet, no industry standards have been widely accepted that define a uniform interface for frameworks. Thus, a framework user must become trained using one or more of the three training techniques above to customize a particular framework. Unfortunately, this knowledge will not likely apply to the customization of the next framework, and the education process will begin again with each new framework to be extended. Without a mechanism that allows a framework user to easily customize many different object oriented frameworks, industry will never fully realize the power and flexibility of object oriented frameworks.
According to the present invention, an object oriented framework mechanism for customization of object oriented frameworks provides an infrastructure that embodies the steps necessary to customize a selected object oriented framework (referred to herein as an xe2x80x9cinput frameworkxe2x80x9d). Combining core functions provided by the framework with extensions provided by the framework consumer (i.e., user), results in a framework customization environment. The architecture of the framework allows a user to determine the conditions and parameters that apply to the specific framework customization environment while allowing the user to interact with the framework using an interface that is consistent regardless of the specific combination of parameters specified by the user. The extensible functions allow new framework customization environments to be easily implemented using the framework. The framework thus allows a common programming interface for generating many different framework customization environments, and also provides a substantially common user interface for customizing any input framework. An input framework is selected, and a subset of its extension points are identified for customization. The framework consumer interacts with the framework customization environment to complete these extensions. Each extension point generates one or more extensions, which are added to the customized framework. The customized framework may then be saved, and may be used to generate a customized application.
The framework mechanism of the present invention was designed and constructed using object-oriented technology. Those who are unfamiliar with object-oriented technology, or with object-oriented framework mechanisms, should read the object-oriented overview section of the Description of the Preferred Embodiments.